home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / enlightenment / e_menu.h < prev    next >
C/C++ Source or Header  |  2006-01-09  |  6KB  |  193 lines

  1. /*
  2.  * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
  3.  */
  4. #ifdef E_TYPEDEFS
  5.  
  6. #define E_MENU_POP_DIRECTION_NONE  0
  7. #define E_MENU_POP_DIRECTION_LEFT  1
  8. #define E_MENU_POP_DIRECTION_RIGHT 2
  9. #define E_MENU_POP_DIRECTION_UP    3
  10. #define E_MENU_POP_DIRECTION_DOWN  4
  11. #define E_MENU_POP_DIRECTION_AUTO  5
  12. #define E_MENU_POP_DIRECTION_LAST  6
  13.  
  14. typedef struct _E_Menu         E_Menu;
  15. typedef struct _E_Menu_Item    E_Menu_Item;
  16. typedef struct _E_Menu_Category_Callback E_Menu_Category_Callback;
  17.  
  18.  
  19. #else
  20. #ifndef E_MENU_H
  21. #define E_MENU_H
  22.  
  23. #define E_MENU_TYPE 0xE0b01009
  24.  
  25. #define E_MENU_ITEM_TYPE 0xE0b0100a
  26.  
  27. struct _E_Menu
  28. {
  29.    E_Object             e_obj_inherit;
  30.    
  31.    char *        category;
  32.  
  33.    struct {
  34.       char              visible : 1;
  35.       int               x, y, w, h;
  36.    } cur, prev;
  37.    
  38.    int                  frozen;
  39.    
  40.    struct {
  41.       char             *title;
  42.       char             *icon_file;
  43.       Evas_Object      *icon;
  44.    } header;
  45.    
  46.    Evas_List           *items;
  47.  
  48.    /* the zone it belongs to */
  49.    E_Zone              *zone;
  50.    
  51.    /* if a menu item spawned this menu, what item is it? */
  52.    E_Menu_Item         *parent_item;
  53.    
  54.    /* only useful if realized != 0 (ie menu is ACTUALLY realized) */
  55.    Ecore_Evas          *ecore_evas;
  56.    Evas                *evas;
  57.    Ecore_X_Window       evas_win;
  58.    Evas_Object         *bg_object;
  59.    Evas_Object         *container_object;
  60.    Evas_Coord           container_x, container_y, container_w, container_h;
  61.    E_Container_Shape   *shape;
  62.    int                  shape_rects_num;
  63.    Ecore_X_Rectangle   *shape_rects;
  64.    
  65.    struct {
  66.       void *data;
  67.       void (*func) (void *data, E_Menu *m);
  68.    } pre_activate_cb, post_deactivate_cb;
  69.    
  70.    unsigned char        realized : 1; /* 1 if it is realized */
  71.    unsigned char        active : 1; /* 1 if it is in active list */
  72.    unsigned char        changed : 1;
  73.    unsigned char        fast_mouse : 1;
  74.    unsigned char        pending_new_submenu : 1;
  75.    unsigned char        have_submenu : 1;
  76.    unsigned char        in_active_list : 1;
  77.    unsigned char        shaped : 1;
  78.    unsigned char        need_shape_export : 1;
  79. };
  80.  
  81. struct _E_Menu_Item
  82. {
  83.    E_Object       e_obj_inherit;
  84.    E_Menu        *menu;
  85.    char          *icon;
  86.    char          *icon_key;
  87.    char          *label;
  88.    E_Menu        *submenu;
  89.    
  90.    Evas_Object   *separator_object;
  91.    
  92.    Evas_Object   *bg_object;
  93.  
  94.    Evas_Object   *container_object;
  95.    
  96.    Evas_Object   *toggle_object;
  97.    Evas_Object   *icon_bg_object;
  98.    Evas_Object   *icon_object;
  99.    Evas_Object   *label_object;
  100.    Evas_Object   *submenu_object;
  101.    
  102.    Evas_Object   *event_object;
  103.    
  104.    int            label_w, label_h;
  105.    int            icon_w, icon_h;
  106.    int            separator_w, separator_h;
  107.    int            submenu_w, submenu_h;
  108.    int            toggle_w, toggle_h;
  109.    int            radio_group;
  110.    int            x, y, w, h;
  111.    
  112.    struct {
  113.       void *data;
  114.       void (*func) (void *data, E_Menu *m, E_Menu_Item *mi);
  115.    } cb;
  116.  
  117.     struct {
  118.       void *data;
  119.       void (*func) (void *data, E_Menu *m, E_Menu_Item *mi);
  120.    } submenu_pre_cb;
  121.  
  122.     struct {
  123.       void *data;
  124.       void (*func) (void *data, E_Menu *m, E_Menu_Item *mi);
  125.    } submenu_post_cb;
  126.  
  127.    unsigned char  separator : 1;
  128.    unsigned char  radio : 1;
  129.    unsigned char  check : 1;
  130.    unsigned char  toggle : 1;
  131.    unsigned char  changed : 1;
  132.    unsigned char  active : 1;
  133. };
  134.  
  135. struct _E_Menu_Category_Callback
  136. {
  137.    const char *category;
  138.    void *data;
  139.    void (*create) (E_Menu *m, void *category_data, void *data);    
  140.    void (*free) (void *data);    
  141. };
  142.  
  143.  
  144. EAPI int          e_menu_init(void);
  145. EAPI int          e_menu_shutdown(void);
  146.  
  147. EAPI E_Menu      *e_menu_new(void);
  148. EAPI void         e_menu_activate_key(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir);
  149. EAPI void         e_menu_activate_mouse(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir, Ecore_X_Time activate_time);
  150. EAPI void         e_menu_activate(E_Menu *m, E_Zone *zone, int x, int y, int w, int h, int dir);
  151. EAPI void         e_menu_deactivate(E_Menu *m);
  152. EAPI int          e_menu_freeze(E_Menu *m);
  153. EAPI int          e_menu_thaw(E_Menu *m);
  154. EAPI void         e_menu_title_set(E_Menu *m, char *title);
  155. EAPI void         e_menu_icon_file_set(E_Menu *m, char *icon);
  156.  
  157. /* menu categories functions */
  158. EAPI void         e_menu_category_set(E_Menu *m, char *category);
  159. EAPI void         e_menu_category_data_set(char *category, void *data);
  160. EAPI E_Menu_Category_Callback  *e_menu_category_callback_add(char *category, void (*create) (E_Menu *m, void *category_data, void *data), void (free) (void *data), void *data);
  161. EAPI void         e_menu_category_callback_del(E_Menu_Category_Callback *cb);
  162.  
  163.     
  164. EAPI void         e_menu_pre_activate_callback_set(E_Menu *m,  void (*func) (void *data, E_Menu *m), void *data);
  165. EAPI void         e_menu_post_deactivate_callback_set(E_Menu *m,  void (*func) (void *data, E_Menu *m), void *data);
  166.  
  167. EAPI E_Menu      *e_menu_root_get(E_Menu *m);
  168.  
  169. EAPI E_Menu_Item *e_menu_item_new(E_Menu *m);
  170. EAPI E_Menu_Item *e_menu_item_nth(E_Menu *m, int n);
  171. EAPI int          e_menu_item_num_get(E_Menu_Item *mi);
  172. EAPI void         e_menu_item_icon_file_set(E_Menu_Item *mi, const char *icon);
  173. EAPI void         e_menu_item_icon_edje_set(E_Menu_Item *mi, const char *icon, const char *key);
  174. EAPI void         e_menu_item_label_set(E_Menu_Item *mi, const char *label);
  175. EAPI void         e_menu_item_submenu_set(E_Menu_Item *mi, E_Menu *sub);
  176. EAPI void         e_menu_item_separator_set(E_Menu_Item *mi, int sep);
  177. EAPI void         e_menu_item_check_set(E_Menu_Item *mi, int chk);
  178. EAPI void         e_menu_item_radio_set(E_Menu_Item *mi, int rad);
  179. EAPI void         e_menu_item_radio_group_set(E_Menu_Item *mi, int radg);
  180. EAPI void         e_menu_item_toggle_set(E_Menu_Item *mi, int tog);
  181. EAPI int          e_menu_item_toggle_get(E_Menu_Item *mi);
  182. EAPI void         e_menu_item_callback_set(E_Menu_Item *mi,  void (*func) (void *data, E_Menu *m, E_Menu_Item *mi), void *data);
  183. EAPI void         e_menu_item_submenu_pre_callback_set(E_Menu_Item *mi,  void (*func) (void *data, E_Menu *m, E_Menu_Item *mi), void *data);
  184. EAPI void         e_menu_item_submenu_post_callback_set(E_Menu_Item *mi,  void (*func) (void *data, E_Menu *m, E_Menu_Item *mi), void *data);
  185. EAPI void         e_menu_item_active_set(E_Menu_Item *mi, int active);
  186.  
  187. EAPI void         e_menu_idler_before(void);
  188.  
  189. EAPI Ecore_X_Window e_menu_grab_window_get(void);
  190.  
  191. #endif
  192. #endif
  193.